package ext.acae2.dms.parse;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.log4j.Logger;

import wt.log4j.LogR;

import ext.acae2.dms.bean.EPMDescribeLinkBean;
import ext.acae2.dms.bean.EPMDocumentBean;
import ext.acae2.dms.bean.PartBean;

public class ParseEPMDescribeLink {
	
	private static final Logger LOGGER = LogR.getLogger(ParseXml.class
			.getName());
	
	public static List<EPMDescribeLinkBean> execute(
			List<PartBean> partList, List<EPMDocumentBean> epmDocList) {

		LOGGER.debug("<<< Start parseEPMDescribeLink");

		List<EPMDescribeLinkBean> epmLinkList = new ArrayList<EPMDescribeLinkBean>();

		for (int i = 0; i < epmDocList.size(); i++) {
			if (epmDocList.get(i).getPartId() != null) {
				String[] partIdArr = epmDocList.get(i).getPartId().split(",");
				List<String> partIds = Arrays.asList(partIdArr);
				for (int j = 0; j < partList.size(); j++) {
					if (partIds.contains(partList.get(j).getId())) {
						EPMDescribeLinkBean epmLink = new EPMDescribeLinkBean(
								partList.get(j), epmDocList.get(i));
						epmDocList.get(i).setVersion(
								partList.get(j).getVersion() + "."
										+ epmDocList.get(i).getVersion());
						
						epmDocList.get(i).setNumber(epmDocList.get(i).getName()+"("+ partList.get(j).getNumber() +")");
						epmDocList.get(i).setName(epmDocList.get(i).getName()+"("+ partList.get(j).getNumber() +")");
						
						epmDocList.get(i).setOBJNAME(
								partList.get(j).getOBJNAME());
						epmDocList.get(i).setDRAWINGNO(
								partList.get(j).getDRAWINGNO());
						epmDocList.get(i).setCOPYRIGHT(
								partList.get(j).getCOPYRIGHT());
						epmDocList.get(i).setCHARACTERTYPE(partList.get(j).getCHARACTERTYPE());
						epmDocList.get(i).setMASS(
								partList.get(j).getMASS());
						epmDocList.get(i).setUNITE(
								partList.get(j).getUNITE());
						epmDocList.get(i).setMODEL(
								partList.get(j).getMODEL());
						epmDocList.get(i).setDESIGN(
								partList.get(j).getDESIGN());
						
						epmDocList.get(i).setSECRETLEVEL(
								partList.get(j).getSECRETLEVEL());
						epmDocList.get(i).setSECURITYDEADLINE(
								partList.get(j).getSECURITYDEADLINE());
						
						epmDocList.get(i).setPARTTYPE(
								partList.get(j).getPARTTYPE());
						epmDocList.get(i).setBLANKSPEC(
								partList.get(j).getBLANKSPEC());
						epmDocList.get(i).setBLANKSTATE(
								partList.get(j).getBLANKSTATE());
						epmDocList.get(i).setMATERIAL(
								partList.get(j).getMATERIAL());
						epmDocList.get(i).setMATERIALSTANDARD(
								partList.get(j).getMATERIALSTANDARD());
						epmDocList.get(i).setCOPYRIGHT(
								partList.get(j).getCOPYRIGHT());
						
						epmLinkList.add(epmLink);
					}
				}
			}
		}

		// Filter Repeat Link
//		for (int i = 0; i < epmLinkList.size(); i++) {
//			for (int j = 0; j < epmLinkList.size(); j++) {
//				if(!epmLinkList.get(i).getEpmDocument().getId().equals(epmLinkList.get(j).getEpmDocument().getId())){
//					if (epmLinkList.get(i).getEpmDocument().getNumber()
//							.equals(epmLinkList.get(j).getEpmDocument().getNumber())) {
//						if(epmLinkList.get(i).getEpmDocument().getPartId()
//								.equals(epmLinkList.get(j).getEpmDocument().getPartId())){
//							epmLinkList.remove(j);
//						}
//					}
//				}
//			}
//		}

		LOGGER.debug("<<< End parseEPMDescribeLink");
		return epmLinkList;
	}
}
